package filtro;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;

import constantes.ComandosNavegacion;


public class FiltroAutenticacion implements PhaseListener
{

	@Override
	public void afterPhase(PhaseEvent arg0) 
	{

	}

	@Override
	public void beforePhase(PhaseEvent arg0)
	{
		FacesContext faces = arg0.getFacesContext();
		String pagina = faces.getViewRoot().getViewId();
		ExternalContext contextoExterno = faces.getExternalContext();
		
		if(!(pagina.equals("/IngresarUsuario.jsp")||pagina.equals("/index.jsp")||pagina.equals("/buscarSubastas.jsp")||pagina.equals("/crearCuentaUsuario.jsp")||pagina.equals("/detalleProducto.jsp")||pagina.equals("/resultadoBuscarSubastas.jsp")||pagina.equals("/ValoracionesUsuario.jsp")))
		{
			if(contextoExterno.getSessionMap().get("Usuario")==null)
			{
				if(pagina.equals("/Subastar.jsp")||pagina.equals("/modificarCuentaUsuario.jsp")||pagina.equals("/Ofertar.jsp"))
				{
					contextoExterno.getSessionMap().put("redirecciona", pagina);
				}
				
				faces.getApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstance(), null, ComandosNavegacion.COMANDOINGRESARUSUARIO);
			}
			else
			{
				if(contextoExterno.getSessionMap().get("redirecciona")!= null)
				{
					if(((String)contextoExterno.getSessionMap().get("redirecciona")).equals("/Subastar.jsp"))
					{
						contextoExterno.getSessionMap().put("redirecciona", null);
						
						faces.getApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstance(), null, ComandosNavegacion.COMANDOSUBASTAR);
					}
					else
					{
						if(((String)contextoExterno.getSessionMap().get("redirecciona")).equals("/Ofertar.jsp"))
						{
							contextoExterno.getSessionMap().put("redirecciona", null);
							
							faces.getApplication().getNavigationHandler().handleNavigation(FacesContext.getCurrentInstance(), null, ComandosNavegacion.COMANDOBUSCARSUBASTAS);
						}
					}
				}
			}
		}

	}

	public PhaseId getPhaseId() 
	{
		return PhaseId.RENDER_RESPONSE;
	}

}
